package org.hibernate.validator;

import java.lang.annotation.Annotation;

import org.hibernate.SessionFactory;
import org.hibernate.validator.Validator;

/**
 * Interfaccia che tutti i validatori che fanno operazioni sul database devono implementare 
 * per essere riconosciute. E' necessario distinguerle in modo da permettere al chiamate di invocare
 * il metodo corretto che contiene informazioni aggiuntive rispetto ai normali validator standard.
 * 
 * @author Nicola Spazzoli
 *
 * @param <A> A constraint validator for a particular annotation
 */
public interface DatabaseValidator<A extends Annotation> extends Validator<A> {

	
	/**
	 * 
	 * @param bean
	 * @param propertyName
	 * @param value
	 * @param sessionFactory
	 * @return
	 */
	public boolean isValid(Object bean, String propertyName, Object value, SessionFactory sessionFactory);
	
	
}
